TXT-öffnen und als XLSX speichern

Hauptbestandteil dieses Demoprogramms ist die Methode “OpenText” mit der Text-Dateien eingelesen werden können, deren Felder durch Trennzeichen voneinader getrennt sind.

Dieser Report öffnet die Textdatei und speichert sie als XLSX-Datei wieder ab.

Es werden folgende Trennzeichen berücksichtigt:

  • Tabulator
  • Semikolon
  • Komma
  • Doppelpunkt

Sollte die zu erzeugende Datei bereits vorhanden sein, so wird sie ohne Nachfrage überschrieben. Soll der Anwender gefragt werden, ob die Datei überschrieben werden soll oder nicht, so muss

SET PROPERTY OF excel ‘DisplayAlerts’ = 1

gesetzt oder ganz weg gelassen werden (DisplayAlerts = 1 ist der Default).

Code

REPORT zz_open_text_and_save_xlsx.
TYPE-POOLS ole2.
*== screen
PARAMETERS p_file TYPE string DEFAULT 'D:text.txt'.
PARAMETERS p_saveas TYPE string DEFAULT 'D:text2'.
START-OF-SELECTION.
*== data
 DATA: excel TYPE ole2_object,
       workbook TYPE ole2_object,
       active_window TYPE ole2_object,
       sheet TYPE ole2_object.
*== create excel application
 CREATE OBJECT excel 'EXCEL.APPLICATION'.
*== do not display excel
 SET PROPERTY OF excel 'Visible' = 0.
*== get workbook
 CALL METHOD OF excel 'Workbooks' = workbook.
*== open file as text to convert
 CALL METHOD OF workbook 'OPENTEXT'
      EXPORTING
         #1 = p_file "file to open
         #2 = 2 "origin
         #3 = 2 "start row
         #4 = 1 "data
         #5 = 1 "text qualifier
         #6 = 0 "consecutive delimiter
         #7 = 1 "Separator: tab
         #8 = 1 "Separator: semicolon
         #9 = 1 "Separator: comma
         #10 = 0 "Separator: space
         #11 = 1 "Separator: other
         #12 = ':'. "Separator: specify other char
*== get active sheet.
 GET PROPERTY OF excel 'ActiveSheet' = sheet.

*== overwrite existing file w/o prompting
 SET PROPERTY OF excel 'DisplayAlerts' = 0.

*== save as XLSX
 CALL METHOD OF sheet 'SAVEAS'
      EXPORTING
         #1 = p_saveas
         #2 = 51.

*== get active window
 CALL METHOD OF excel 'ACTIVEWINDOW' = active_window.
*== set active_window visible
 SET PROPERTY OF active_window 'VISIBLE' = 1.
*== close active_window without saving
 CALL METHOD OF active_window 'CLOSE'
      EXPORTING #1 = 0.
*== close workbook
 CALL METHOD OF workbook 'CLOSE'.
*== close excel application
 CALL METHOD OF excel 'QUIT'.
*== free all used objects
 FREE OBJECT sheet.
 FREE OBJECT workbook.
 FREE OBJECT excel.
 FREE OBJECT active_window.
Enno Wulff